package model

import (
	"manager/model/entity"
)

// MessageNotifyCreateRequest 创建现场数据
type MessageNotifyCreateRequest struct {
	EbikeId int64 `json:"ebike_id"`

	EbikeName string `json:"ebike_name"`

	MessageType int `json:"message_type"` // 内容分类 1 故障 2 告警 3  通知

	Title string `json:"title"`

	Content string `json:"content"`

	Flag int `json:"flag"`

	Extend string `json:"extend"`

	RelationId int64 `json:"relation_id"`

	UserId int64 `json:"user_id"`

	FrameCode string `json:"frame_code"`

	UpdatedAt int64 `json:"updated_at"`
}

// MessageNotifyUpdateRequest 更新现场数据
type MessageNotifyUpdateRequest struct {
	Id int64 `json:"id"`

	EbikeId  *int64  `json:"ebike_id"`
	EbikeIds []int64 `json:"ebike_ids"`

	EbikeName *string `json:"ebike_name"`

	MessageType *int `json:"message_type"`

	Title *string `json:"title"`

	Content *string `json:"content"`

	Flag *int `json:"flag"`

	Extend string `json:"extend"`

	UserId *int64 `json:"user_id"`

	UpdatedAt *int64 `json:"updated_at"`

	TimeStamp *int64 `json:"time_stamp"`
}

// MessageNotifyListRequest 列表现场数据
type MessageNotifyListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	Id int64 `json:"id"`

	UserId int64 `json:"user_id"`

	EbikeIds []int64 `json:"ebike_ids"`

	EbikeId *int64 `json:"ebike_id"`

	EbikeName *string `json:"ebike_name"`

	MessageType *int `json:"message_type"`

	Title *string `json:"title"`

	Content *string `json:"content"`

	Flag *int `json:"flag"`

	Extend string `json:"extend"`

	TimeStamp *int64 `json:"time_stamp"`

	UpdatedAt *int64 `json:"updated_at"`
}

// MessageNotifyListResponse 列表回包数据
type MessageNotifyListResponse struct {
	Total int                  `json:"total"`
	List  []*MessageNotifyInfo `json:"list"`
}

// MessageNotifyInfoRequest 列表现场数据
type MessageNotifyInfoRequest struct {
	Id int64 `json:"id"`

	EbikeId *int64 `json:"ebike_id"`

	EbikeName *string `json:"ebike_name"`

	MessageType *int `json:"message_type"`

	Title *string `json:"title"`

	Content *string `json:"content"`

	Flag *int `json:"flag"`

	Extend string `json:"extend"`

	TimeStamp *int64 `json:"time_stamp"`

	UpdatedAt *int64 `json:"updated_at"`
}

// MessageNotifyInfo 详细数据
type MessageNotifyInfo struct {
	Id int64 `json:"id"`

	EbikeId int64 `json:"ebike_id"`

	EbikeName string `json:"ebike_name"`

	MessageType int `json:"message_type"`

	Title string `json:"title"`

	Content string `json:"content"`

	Flag int `json:"flag"`

	Extend string `json:"extend"`

	FrameCode string `json:"frame_code"`

	RelationId int64 `json:"relation_id"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// MessageNotifyDeleteRequest 删除现场数据
type MessageNotifyDeleteRequest struct {
	Id      int64 `json:"id"`
	EbikeId int64 `json:"ebike_id"`
}

// MessageNotifysEntityToDto entity数据转换
func MessageNotifysEntityToDto(messageNotifys []*entity.MessageNotify) []*MessageNotifyInfo {
	out := make([]*MessageNotifyInfo, 0, len(messageNotifys))
	for _, c := range messageNotifys {
		out = append(out, MessageNotifyEntityToDto(c))
	}
	return out
}

// MessageNotifyEntityToDto entity数据转换
func MessageNotifyEntityToDto(e *entity.MessageNotify) *MessageNotifyInfo {
	return &MessageNotifyInfo{

		Id: e.Id,

		EbikeId: e.EbikeId,

		EbikeName: e.EbikeName,

		MessageType: e.MessageType,

		Title: e.Title,

		Content: e.Content,

		Flag: e.Flag,

		Extend: e.Extend,

		FrameCode: e.FrameCode,

		RelationId: e.RelationId,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
